home *** CD-ROM | disk | FTP | other *** search
- 100 rem *************************
- 110 rem * demoprogramm fuer *
- 120 rem * relative dateiver- *
- 130 rem * verwaltung *
- 140 rem * 1995 by 64'er magazin *
- 150 rem *************************
- 597 rem *************************
- 598 rem * programm-handler *
- 599 rem *************************
- 600 ga=8: rem floppy-geraeteadresse
- 605 mp=1: rem flag fuer menuepunktewahl
- 606 gosub800: rem dimensionierung
- 610 poke53280,1:poke53281,1:poke646,0:printchr$(14)chr$(8)chr$(147)
- 612 for i=1 to 5
- 613 read me$(i)
- 614 next i
- 615 gosub9900
- 620 printchr$(19)chr$(13)chr$(13)tab(10)chr$(18)" [210][197][204][193][212][201][214][197] [193][196][210][197][211][211][196][193][212][197][201] "chr$(13)
- 629 for c=1 to 5
- 630 ifmp=c then printtab(10)chr$(18)me$(mp)
- 635 ifmp<>c then printtab(10)me$(c)
- 640 next c
- 680 get t$
- 682 ift$=chr$(17)then mp=mp+1:ifmp>5thenmp=5
- 684 ift$=chr$(145)then mp=mp-1:ifmp<1thenmp=1
- 686 ift$=chr$(13)then 780
- 690 goto620
- 780 on mp gosub 1100,7000,8000,2500,2400
- 790 goto 620
- 797 rem ****************************
- 798 rem * variablen dimensionieren *
- 799 rem ****************************
- 800 dm=400: rem vorgesehene datensatzanzahl
- 810 dim id$(dm): rem schluesselwort (indexfeld)
- 820 dim in(dm): rem dazugehoerige recordnummer
- 830 dim ds$(6): rem datenfelder - bei bedarf erhoehen oder reduzieren!
- 840 return
- 987 rem ****************************
- 988 rem * rel.datei anlegen/oeffnen*
- 989 rem ****************************
- 990 rem lf=log.filenummer
- 991 rem sa=sekundaeradresse
- 992 rem dn$=dateiname
- 993 rem rl=recordlaenge
- 1000 open15,8,15: rem floppy-kommandokanal oeffnen
- 1010 open lf,ga,sa,dn$+",l,"+chr$(rl): rem rel-datei oeffnen
- 1020 return
- 1097 rem ************************
- 1098 rem * datei initialisieren *
- 1099 rem ************************
- 1100 lf=1:sa=2:dn$="adressen":rl=72:gosub1000: rem rel-datei adressen oeffnen
- 1110 open2,8,3,"index,s,r": rem seq-datei index zum lesen oeffnen
- 1120 gosub4000: rem fehlerkanal lesen
- 1130 if er<>0 then ad=0:goto1190: rem datei noch nicht angelegt
- 1135 input#2,ad: rem anzahl der datensaetze
- 1140 for i=1 to ad
- 1142 input#2,id$(i),in(i)
- 1144 next i: rem indexdatei lesen
- 1190 fl=1: rem kennzeichen 'datei im rechner'
- 1192 close 2: rem seq. indexdatei schliessen
- 1195 printchr$(13)chr$(13)tab(9)"waehlen mit <[195][210][211][210] auf/ab>"
- 1196 printtab(10)"aktivieren mit <[210][197][212][213][210][206]>"
- 1199 return
- 1987 rem ****************************
- 1988 rem * auf record positionieren *
- 1989 rem ****************************
- 1990 rem sa = sekundaeradresse
- 1991 rem rn = record-nummer
- 1992 rem rp = position in record
- 2000 hb=int(rn/256): lb=rn-256*hb: rem record-nr. in high/low-byte teilen
- 2010 print#15,"p"+chr$(sa)+chr$(lb)+chr$(hb)+chr$(rp)
- 2020 return
- 2397 rem ************************
- 2398 rem * programm beenden *
- 2399 rem ************************
- 2400 close1:close15:open4,8,15,"i":close4:printchr$(147):end
- 2497 rem ************************
- 2498 rem * dateiarbeit beenden *
- 2499 rem ************************
- 2500 if fl=0 then gosub9500: return
- 2509 print#15,"s:index": rem alte indexdatei loeschen
- 2510 open2,8,3,"index,s,w": rem aktualisierte indexdatei zum schreiben oeffnen
- 2520 print#2,ad: rem anzahl der records
- 2530 for c=1 to ad
- 2540 print#2,id$(c)","in(c)
- 2550 next c: rem indexdatei sichern
- 2560 gosub 3000
- 2570 printchr$(147):end
- 2996 rem ************************
- 2997 rem * rel-datei schliessen *
- 2998 rem ************************
- 2999 rem lf=log. filenummer
- 3000 close lf: rem rel-datei schliessen
- 3010 close 15: rem floppy-kanal schl.
- 3020 return
- 3997 rem **********************
- 3998 rem * floppy-fehlerkanal *
- 3999 rem **********************
- 4000 input#15,er,er$,tr,sk
- 4010 rem print er;er$;tr;sk:ohne 'rem' erscheint fehlermeldung auf dem screen!
- 4020 return
- 4996 rem **********************
- 4997 rem * feldl. korrigieren *
- 4998 rem **********************
- 4999 rem beispiel fuer sechs datenfelder ds$(1)-ds$(6)
- 5000 le$=" ": rem leerstring zum auffuellen
- 5010 ds$(1)=left$(ds$(1)+left$(le$,abs(15-len(ds$(1)))),15): rem nachname
- 5020 ds$(2)=left$(ds$(2)+left$(le$,abs(10-len(ds$(2)))),10): rem vorname
- 5030 ds$(3)=left$(ds$(3)+left$(le$,abs(15-len(ds$(3)))),15): rem strasse
- 5040 ds$(4)=left$(ds$(4)+left$(le$,abs(5-len(ds$(4)))),5): rem postleitzahl
- 5050 ds$(5)=left$(ds$(5)+left$(le$,abs(15-len(ds$(5)))),15): rem wohnort
- 5060 ds$(6)=left$(ds$(6)+left$(le$,abs(11-len(ds$(6)))),11): rem telefon
- 5099 return
- 5997 rem *************************
- 5998 rem * record zusammenfassen *
- 5999 rem *************************
- 6000 rc$="":rem variable fuer inhalt des gesamt-records
- 6010 for c=1 to 6: rem =menge!
- 6020 rc$=rc$+ds$(c)
- 6030 next c
- 6040 return
- 6997 rem *************************
- 6998 rem * daten eingeben *
- 6999 rem *************************
- 7000 if fl=0 then gosub9500: return
- 7009 printchr$(147)left$(la$,79)
- 7010 printchr$(19)chr$(18)tab(2)" [196]ateneingabe-[205]aske "tab(23)"[210]ecord-[206]r.: ";ad+1
- 7015 print
- 7020 printtab(2)"[206]achname: "
- 7022 printtab(2)"[214]orname : "
- 7024 printtab(2)"[211]trasse : "
- 7026 printtab(2)"[208][204][218] : "
- 7028 printtab(2)"[215]ohnort : "
- 7030 printtab(2)"[212]elefon : "
- 7032 print:printleft$(la$,79)
- 7040 sp=12: rem eingabespalte bleibt gleich!
- 7045 for zl=2 to 7
- 7047 gosub 7900: rem eingabe-cursor positionieren
- 7050 poke19,64:inputds$(zl-1):poke19,0:print
- 7060 next zl
- 7070 rem eingabe in indexdatei vermerken
- 7080 ad=ad+1: rn=ad: rem datensatzanzahl inkrementieren
- 7090 id$(ad)=ds$(1): rem schluesseldatenfeld
- 7100 in(ad)=rn: rem recordnummer
- 7110 :
- 7120 rem datenfelder mit passender laenge ausstatten
- 7130 gosub 5000: rem unterprogramm muss auf sechs datenfelder eingerichtet sein
- 7199 :
- 7200 rem dateneingabe zur speicherung zusammenfassen
- 7210 gosub 6000
- 7228 rem ***********************
- 7229 rem * datensatz speichern *
- 7230 rem ***********************
- 7240 rn=ad:rp=1:gosub 2000: rem record positionieren
- 7250 print#lf,rc$: rem datensatz schreiben
- 7260 gosub 4000: rem fehlerkanal
- 7270 printchr$(13)tab(6)chr$(18)" [196]atensatz wurde gesichert!"
- 7272 for t=1 to 1500: next t: printchr$(147)
- 7280 gosub9900:return
- 7888 rem *************************
- 7898 rem * cursor-positionierung *
- 7899 rem *************************
- 7900 poke214,zl:poke 211,sp
- 7902 sys 58640
- 7904 return
- 7997 rem *************************
- 7998 rem * daten ausgeben *
- 7999 rem *************************
- 8000 if fl=0 then gosub 9500 :return
- 8010 printchr$(147):poke19,64:input"[201]ndex-[194]egr.:";ix$:poke19,0:rem indexabfrage
- 8020 for c=1 to ad: rem indexdatei durchsuchen
- 8030 if ix$=id$(c) then gn=c:c=ad:next c:goto 8100: rem index gefunden
- 8040 next c
- 8050 printchr$(147)"[211]chluesselwort falsch oder":print"nicht vorhanden!"
- 8052 fort=1 to 1000:next
- 8060 printchr$(147):gosub9900:return
- 8100 rn=gn:rp=1:rc$="":gosub2000:rem record postionieren
- 8110 input#lf,rc$: rem record holen
- 8119 rem **************************
- 8120 rem * gesamtstring aufteilen *
- 8121 rem **************************
- 8130 ds$(1)=mid$(rc$,1,15): rem nachname
- 8132 ds$(2)=mid$(rc$,16,10): rem vorname
- 8134 ds$(3)=mid$(rc$,26,15): rem strasse
- 8136 ds$(4)=mid$(rc$,41,5): rem plz
- 8137 ds$(5)=mid$(rc$,46,15): rem wohnort
- 8138 ds$(6)=mid$(rc$,61,11): rem telefon
- 8139 rem *****************************
- 8140 rem datensatz auf screen ausgeben
- 8141 rem *****************************
- 8142 printchr$(147)left$(la$,79)
- 8143 printchr$(19)chr$(18)tab(2)" [196]atenausgabe "tab(23)"[210]ecord-[206]r.: ";rn
- 8150 printchr$(13):for c=1 to 6
- 8160 printtab(5)ds$(c)
- 8170 next c
- 8172 print:printleft$(la$,79)+chr$(145)+chr$(145)
- 8180 print:printtab(16)chr$(18)" [212][193][211][212][197]! "
- 8182 poke198,0:wait198,1
- 8185 printchr$(147):gosub9900:return
- 9497 rem **************************
- 9498 rem * keine datei geoeffnet! *
- 9499 rem **************************
- 9500 printchr$(147):gosub 9900
- 9530 printchr$(19)chr$(13)chr$(13)tab(13)" [198][197][200][204][197][210][205][197][204][196][213][206][199] "chr$(13)chr$(13)
- 9535 printtab(12)"[196]atei wurde noch"
- 9536 printtab(12)"nicht initialisiert"
- 9537 printtab(12)"oder angelegt!!!"
- 9590 fort=1to1500:next
- 9592 printchr$(147):gosub9900
- 9599 return
- 9897 rem *************************
- 9898 rem * unterpr. window *
- 9899 rem *************************
- 9900 e1$="[176]":e2$="[174]":e3$="[173]":e4$="[189]"
- 9901 ul$="[171]":ur$="[179]":ln$=""
- 9904 fori=1to22:ln$=ln$+"[192]":next
- 9905 la$=ln$+ln$
- 9906 printchr$(19):printtab(9)e1$ln$e2$
- 9907 zl=2:sp=9:gosub7900
- 9908 for c=1 to 7
- 9910 printtab(9)"[221]"tab(32)"[221]"
- 9911 next c
- 9913 printtab(9)e3$ln$e4$
- 9915 zl=3:sp=9:gosub7900
- 9916 printtab(9)ul$ln$ur$
- 9920 return
- 9997 rem *************************
- 9998 rem * menuepunkte *
- 9999 rem *************************
- 10000 data" [196]atei initialisieren "
- 10010 data" [196]ateneingabe "
- 10020 data" [196]atenausgabe "
- 10030 data" [196]atei schliessen "
- 10040 data" [208]rogramm beenden "
-